package cn.edu.scau.cmil.luochenghao.comprehensive;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PrintTranscript {
	public static void Print(String[][] student){
		String[] s=new String[3];//记录要打印的课程、教师和专业班级
		JFrame x = new JFrame("打印信息");
		x.setLayout(new FlowLayout());
		JButton buttonSure = new JButton("确定");
		JTextField t1 = new JTextField(30);//课程名称
		JTextField t2 = new JTextField(17);//专业班级
		JTextField t3 = new JTextField(30);//教师姓名
		buttonSure.setFont(new Font("黑体", Font.PLAIN, 12));
		buttonSure.setVisible(true);
		x.add(new JLabel("-----------------请填写需要打印成绩单的科目的如下信息：-----------------"));
		x.add(new JLabel("请输入课程名称："));
		x.add(t1);
		x.add(new JLabel("请输入教师姓名："));
		x.add(t3);
		x.add(new JLabel("请输入专业班级(如：20XX级XXX专业XX班)："));
		x.add(t2);
		x.add(buttonSure);
		x.setResizable(false);
		x.setSize(525, 170);
		x.setLocationRelativeTo(null);
		x.setVisible(true);
		x.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		buttonSure.addActionListener(new ActionListener() {//点击确定按钮后
			public void actionPerformed(ActionEvent e) {
				x.setVisible(false);//隐藏输入打印信息的窗口
				s[0]=t1.getText().trim();//把课程、老师和专业班级记录到数组s里
				s[1]=t3.getText().trim();
				s[2]=t2.getText().trim();
				JFrame fr= new JFrame("期末考试成绩单");//成绩单窗口
		  	  	int renshu=0,ren=0;
		  	  	for(renshu=0;student[renshu][0]!=null;renshu++) {//计算student里记录了多少条成绩
			  	}
		  	  	Object[][] Data=new Object[renshu+12][7];//构建JTable用的数组
		  	  	//不知道JTable怎么实现合并单元格
		  	  	Data[0][0]="";Data[0][1]="                                       期 末 考 试";Data[0][2]="成 绩 单";Data[0][3]="";Data[0][4]="";Data[0][5]="";Data[0][6]="";
		  	  	Data[1][0]="课程：";Data[1][1]=s[0];
		  	  	Data[2][0]="教师：";Data[2][1]=s[1];
		  	  	Data[3][0]="班级：";Data[3][1]=s[2];
		  	  	Data[4][0]="学号";Data[4][1]="姓名";Data[4][2]="考勤";Data[4][3]="测验";Data[4][4]="作业";Data[4][5]="期末";Data[4][6]="总评";
		  	  	for(int k=0;k<renshu;k++) {//用student数组填充表格
		  	  		if(student[k][7].equals(s[0])&&student[k][8].equals(s[1])&&student[k][9].equals(s[2])) {
		  	  			for(int j=0;j<7;j++) {
		  	  				Data[5+ren][j]=student[k][j];
		  	  			}
		  	  			ren++;
		  	  		}
		  	  	}
		  	  	Data[6+renshu][0]="成绩区段";Data[6+renshu][1]="人数";Data[6+renshu][2]="百分比";Data[6+renshu][3]="";Data[6+renshu][4]="";Data[6+renshu][5]="";Data[6+renshu][6]="";
		  	  	Data[7+renshu][0]="90-100";
		  	  	Data[8+renshu][0]="80-89";
		  	  	Data[9+renshu][0]="70-79";
		  	  	Data[10+renshu][0]="60-69";
		  	  	Data[11+renshu][0]="0-69";
		  	  	int number1=0;
		  	  	int number2=0;
		  	  	int number3=0;
		  	  	int number4=0;
		  	  	int number5=0;
		  	  	for(int k=0;student[k][0]!=null;k++) {//计算各分数区段人数，只需看数组下标6（总评）
		  	  		if(student[k][7].equals(s[0])&&student[k][8].equals(s[1])&&student[k][9].equals(s[2])) {
		  	  			if(Integer.parseInt(student[k][6])>=90) number1++;
		  	  			else if(Integer.parseInt(student[k][6])>=80) number2++;
		  	  			else if(Integer.parseInt(student[k][6])>=70) number3++;
		  	  			else if(Integer.parseInt(student[k][6])>=60) number4++;
		  	  			else number5++;
		  	  		}
		  	  	}
		  	  	//计算百分比要把String转成int计算再转回String
		  	  	Data[7+renshu][1]=number1;if(number1!=0) Data[7+renshu][2]=String.format("%.2f", number1*100.0/renshu)+"%";else Data[7+renshu][2]="0.00%";
		  	  	Data[8+renshu][1]=number2;if(number2!=0) Data[8+renshu][2]=String.format("%.2f", number2*100.0/renshu)+"%";else Data[8+renshu][2]="0.00%";
		  	  	Data[9+renshu][1]=number3;if(number3!=0) Data[9+renshu][2]=String.format("%.2f", number3*100.0/renshu)+"%";else Data[9+renshu][2]="0.00%";
		      	Data[10+renshu][1]=number4;if(number4!=0) Data[10+renshu][2]=String.format("%.2f", number4*100.0/renshu)+"%";else Data[10+renshu][2]="0.00%";
		      	Data[11+renshu][1]=number5;if(number5!=0) Data[11+renshu][2]=String.format("%.2f", number5*100.0/renshu)+"%";else Data[11+renshu][2]="0.00%";
		      	Transcript tr=new Transcript();//表格模版
		      	tr.rowData=Data;
		      	JTable table=new JTable(tr);
		     	table.setBackground(Color.WHITE);
		     	table.setPreferredScrollableViewportSize(new Dimension(620, 500));
		     	table.getColumnModel().getColumn(0).setPreferredWidth(80);//设置各列宽
		      	table.getColumnModel().getColumn(1).setPreferredWidth(200);
		      	table.getColumnModel().getColumn(2).setPreferredWidth(40);
		      	table.getColumnModel().getColumn(3).setPreferredWidth(40);
		      	table.getColumnModel().getColumn(4).setPreferredWidth(40);
		      	table.getColumnModel().getColumn(5).setPreferredWidth(40);
		      	table.getColumnModel().getColumn(6).setPreferredWidth(40);
		      	JScrollPane script=new JScrollPane(table);
		      	fr.setContentPane(script);
		      	fr.setResizable(false);
		  		fr.pack();
		  		fr.setLocationRelativeTo(null);
		  		fr.setVisible(true);
		  		fr.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//点叉只关闭成绩单窗口
			}
			});
	}
}
